From 25b4f2e7535dbb381a3b8b3765d0585ab92b5032 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Thu, 17 Jan 2008 12:05:43 -0700 Subject: [PATCH] [IA64] Fix MCA handling from xen relocation changes Signed-off-by: Kazuhiro Suzuki --- xen/arch/ia64/linux-xen/mca_asm.S | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/xen/arch/ia64/linux-xen/mca_asm.S b/xen/arch/ia64/linux-xen/mca_asm.S index f9176d98d5..2f25294a0e 100644 --- a/xen/arch/ia64/linux-xen/mca_asm.S +++ b/xen/arch/ia64/linux-xen/mca_asm.S @@ -482,32 +482,26 @@ ia64_reload_tr: // avoid overlapping with xenheap TR mov r17=ip ;; - tpa r17=r17 - ;; dep r17=0,r17,0,KERNEL_TR_PAGE_SHIFT ;; shr.u r17=r17,IA64_GRANULE_SHIFT ;; - GET_THIS_PADDR(r2,cpu_kr);; - add r2=IA64_KR_CURRENT_OFFSET,r2;; - ld8 r16=[r2];; + // Kernel registers are saved in a per_cpu cpu_kr_ia64_t + // to allow the kernel registers themselves to be used by domains. + GET_THIS_PADDR(r2, cpu_kr);; + add r2=IA64_KR_CURRENT_STACK_OFFSET,r2 + ;; + ld8 r16=[r2] ;; #if KERNEL_TR_PAGE_SHIFT < IA64_GRANULE_SHIFT # error "KERNEL_TR_PAGE_SHIFT < IA64_GRANULE_SHIFT shouldn't happen" #endif #if KERNEL_TR_PAGE_SHIFT > IA64_GRANULE_SHIFT - dep r16=0,r16,0,KERNEL_TR_PAGE_SHIFT-IA64_GRANULE_SHIFT + dep r18=0,r16,0,KERNEL_TR_PAGE_SHIFT-IA64_GRANULE_SHIFT ;; #endif - cmp.eq p7,p0=r17,r16 + cmp.eq p7,p0=r17,r18 (p7) br.cond.sptk .reload_vhpt - - // Kernel registers are saved in a per_cpu cpu_kr_ia64_t - // to allow the kernel registers themselves to be used by domains. - GET_THIS_PADDR(r2, cpu_kr);; - add r2=IA64_KR_CURRENT_STACK_OFFSET,r2 - ;; - ld8 r16=[r2] #else mov r16=IA64_KR(CURRENT_STACK) #endif @@ -535,6 +529,9 @@ ia64_reload_tr: #if VHPT_ENABLED GET_VA_VCPU_VHPT_MADDR(r2,r3);; dep r3=0,r2,0,KERNEL_TR_PAGE_SHIFT + ;; + dep r3=0,r3,60,4 // physical address of + // va_vhpt & ~(KERNEL_TR_PAGE_SHIFT - 1) ;; shr.u r3=r3,IA64_GRANULE_SHIFT ;; -- 2.30.2